package com.isoft.farm.service.Impl;

import com.isoft.farm.common.PageObject;
import com.isoft.farm.common.ServiceException;
import com.isoft.farm.dao.SysRoleDao;
import com.isoft.farm.dao.SysRoleMenuDao;
import com.isoft.farm.dao.SysUserRoleDao;
import com.isoft.farm.entity.CheckBox;
import com.isoft.farm.entity.SysRole;
import com.isoft.farm.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.List;

@Service
public class SysRoleServiceImpl implements SysRoleService {
    @Autowired
    SysRoleDao sysRoleDao;

    @Autowired
    SysUserRoleDao sysUserRoleDao;

    @Autowired
    SysRoleMenuDao sysRoleMenuDao;
    @Override
    public List<CheckBox> findObjects() {
        return sysRoleDao.findObjects();
    }

    @Override
    public PageObject<SysRole> findPageObjects(String name, Integer pageCurrent) {
        //校验参数
        if(pageCurrent==null||pageCurrent<1)
            throw new IllegalArgumentException("当前页码无效");
        //查询总记录数
        int rowCount=sysRoleDao.getRowCount(name);
        if (rowCount==0)
            throw new ServiceException("没有找到对应的记录");
        int pageSize=3;
        int startIndex=(pageCurrent-1)*pageSize;
        List<SysRole> records=sysRoleDao.findPageObjects(name,startIndex,pageSize);
        return new PageObject<>(pageCurrent,pageSize,rowCount,records);
    }
    public int saveObject(SysRole sysRole, Integer[] menuIds) {
        if (sysRole==null)
            throw new IllegalArgumentException("保存对象不能为空");
        if (StringUtils.isEmpty(sysRole.getName()))
            throw new IllegalArgumentException("角色名不能为空");
        if (menuIds==null||menuIds.length==0)
            throw new IllegalArgumentException("必须为角色分配权限");
        //保存角色自身
        int rows=sysRoleDao.insertObject(sysRole);
        //保存角色与菜单之间的关系
        sysRoleMenuDao.insertObjects(sysRole.getId(),menuIds);
        return rows;
    }
//
//
//    public int deleteObject(Integer id) {
//        //验证参数的合法性
//        if (id==null||id<0)
//            throw new IllegalArgumentException("请先选择！");
//        //基于id，，删除关系数据，分别调用 先删除关联性  再去删除自身
//        sysRoleMenuDao.deleteObjectsByRoleId(id);
//        sysUserRoleDao.deleteObjectsByRoleId(id);
//        //删除角色自身
//        int rows=sysRoleDao.deleteObject(id);
//        if (rows==0){
//            throw new ServiceException("此纪录可能不存在！");
//        }
//        return rows;
//    }
//
//    public SysRoleMenuVo findObjectById(Integer id) {
//        if (id==null||id<0)
//            throw new IllegalArgumentException("id的值不合法");
//        //开始查询
//        SysRoleMenuVo sysRoleMenuVo=sysRoleDao.findObjectById(id);
//        if (sysRoleMenuVo==null)
//            throw new ServiceException("此纪录已经不存在！");
//        return sysRoleMenuVo;
//    }
//
//    @Override
//    public int updateObjectById(SysRole sysRole, Integer[] menuIds) {
//        if (sysRole==null)
//            throw new IllegalArgumentException("保存对象不能为空");
//        if (sysRole.getId()==null)
//            throw new IllegalArgumentException("id值不能为空");
//        if (StringUtils.isEmpty(sysRole.getName()))
//            throw new IllegalArgumentException("角色名不能为空");
//        if (menuIds==null||menuIds.length==0)
//            throw new IllegalArgumentException("必须为角色分配权限");
//        //更新数据
//        int rows=sysRoleDao.updateObjectById(sysRole);
//        if (rows==0){
//            throw new IllegalArgumentException("对象已经不存在");
//        }
//        //对于角色呈现的修改  删除之前的所有权限 再插入新的权限
//        sysRoleMenuDao.deleteObjectsByRoleId(sysRole.getId());
//        sysRoleMenuDao.insertObjects(sysRole.getId(),menuIds);
//        return rows;
//    }
}
